perm filename PARTP.F4[MSS,LCS] blob sn#255999 filedate 1976-12-28 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	C THIS AIDS IN EXTRACTING PARTS FROM SCORES. SEE PT1.CMD
C00024 ENDMK
C⊗;
C THIS AIDS IN EXTRACTING PARTS FROM SCORES. SEE PT1.CMD
	COMMON/STF/RSTFAC(-3/4),RSTJ2 /POSI/STFF(-3/4),JJ2,JPQ
	1 /IVV/IWDS(200)
	COMMON RS,JA,REST,J2,RQ(18),JX,PR,LX,RDIS
C  ORDER OF COMMON BLOCKS **MUST** STAY AS IS!
	COMMON/XRN/RN(4000) /SF/KL,RT,KP,STFSZ,NAMX
	1 /PTR/PWDS(700)/LLL/L,LL,I,IX/XXX/LK,LP,JY
C  INCREASE DIMENSION OF PWDS FOR VERY FULL PAGES.
      DIMENSION KNM(10),NRD(100),MM(4000),NN(4000),
	1 KWDS(1),KPN(1)
	COMMON /PX/PN(1800) /Q/Q(8200)
	COMMON /RCLF/KK,CLEF,KW,ITEM,RSTAFF,SN,YN,RNAM,RNAM2,RNAM3
	DATA FIB/.7/,RSPC/24./,PGNUM/1.6/,RNMHT/16.0/,RNMSZ/1.2/
	1 ,RLTRSZ/1.0/,SPCNT/0.7/
	EQUIVALENCE (RQ(2),R4),(R5,RQ(3)),(R6,RQ(4)),(R7,RQ(5))
	1,(R8,RQ(6)),(R9,RQ(7)),(RQ(10),XLFT)
	1,(MM,RN),(NN,RN(4001)),(KWDS,PWDS),(KPN,PN)
C  RQ(2) IS R4, RQ(3) IS R5 ETC.

	JNM=1
	MRD=0
	JRD=0

	TYPE 3
	ACCEPT 2,RS,NTYPE
C  TYPE ANY NUM AFTER NAME(I.E.5 SPACES) TO PRINT INST. NAMES AS READ.
	IF(RS.EQ.' ')RS='OLD'
	IF(RS.EQ.'OLD')CALL PT2
	CALL IFILE(1,RS)
244	FORMAT(I,A5,30I)
544	READ(1,244,END=344),K,KNM(JNM),(IWDS(K),K=1,30)
	JNM=JNM+1
	DO 444 K=1,30
	J=IWDS(K)
	JRD=JRD+1
	NRD(JRD)=J
444	IF(J.EQ.0)GO TO 544

344	KNM(JNM)='ZZZZZ'
	JNM=1
	JRD=0
744	XSIG=FIB
	CLEF=-1
	XMTR=FIB
	XLFT=0
	ENDLN=0
	KQ=0
	YCLEF=2.
	YSIG=2.
	YMTR=2.
	KW=1
	KX=1
	RSTAFF=0
	RM=0
	L=1
	LK=1
CC	IF(LSTNM.NE.0)GO TO 87
CC10	IF(LSTNM.EQ.0)GO TO 83
CC87	IF(NAME.GE.LSTNM)GO TO 83
CC	NAME=NAME+2
CC	GO TO 84
86	FORMAT(1XA5)
3	FORMAT(' TYPE FILE NAME  ',$)
CC300	FORMAT(' TYPE FINAL NAME  ',$)
CC83	IF(JRD.EQ.0)GO TO 183

83	NAME=KNM(JNM)
	JNM=JNM+1
	IF(NAME.EQ.'ZZZZZ')GO TO 20
	JREAD=-1
	JRD=JRD+1
	NXX=NRD(JRD)
	NAMZ=NAME
	GO TO 284

CC	LSTNM=KNM(JNM)-2
C  ALL DONE  ↑↑
CC	GO TO 283
CC183	TYPE 3
CC	ACCEPT 2,NAME
CC	IF(NAME.EQ.' ')GO TO 83
CC	IF(NAME.EQ.'X')GO TO 20
CC	TYPE 300
CC	ACCEPT 2,LSTNM
CC	IF(LSTNM.EQ.' ')LSTNM=NAME
CC	IF(LSTNM.EQ.' ')GO TO 83
CC283	NAMZ=NAME

10	IF(LOOKF(NAME))GO TO 284
	NAME=NAMZ+256
	IF(LOOKF(NAME).GE.0)GO TO 83
	NAMZ=NAME
C  FOUND NO MORE TO READ
284	JZ=0
	SN=200
	SNMTR=SN
	IF(RM.NE.0)GO TO 277
	RM=-1
4	FORMAT(' TYPE INST NAME  '$)
	TYPE 4
	ACCEPT 2,RNAM,K
	RNAM2=0
	RNAM3=0
	RNAM4=0
	IF(K.EQ.0)GO TO 277
	TYPE 177
	ACCEPT 2,RNAM2,K
	IF(K.EQ.0)GO TO 277
C  TYPE NUM AFTER NAME TO ENTER UP TO 4 NAMES.
	TYPE 177
	ACCEPT 2,RNAM3
	TYPE 177
	ACCEPT 2,RNAM4
177	FORMAT(' OTHER INST NAME   ',$)



C  FOUND NO MORE TO READ
1212	CALL PUTEXT('BARS','PAG')
	CALL EXTOUT(KBAR,512)
	RSTJ2=SAVSIZ
	CALL EXTOUT(RSTFAC,128)
	CALL FINEXT
C K (NUM OF BARS - UP TO 511) IS FIRST LOC OF KBAR.
	CALL PT2(KPN,Q,KWDS,RN)


277	TYPE 86,NAME
	CALL GETEXT(NAME,'DMD')
C  LP IS START OF RN ARRAY THIS TIME
	CALL EXTIN(RSTFAC,20)
	CALL EXTIN(KWDS,JJ2)
	CALL EXTIN(RN,JPQ)
	IF(SAVSIZ.EQ.0)SAVSIZ=RSTJ2


CC	IF(INM.EQ.'99')GO TO 20
CC	K=SN/100.
CC77	TYPE 86,NAME
CC	IF(JRD.EQ.0)GO TO 777
C  FOR COMMAND FILE
CC	N=NRD(JRD)
CC	N=N-1
CC	NRD(JRD)=N
CC	IF(N.GT.0)GO TO 277
CC	IF(NRD(JRD+1))LSTNM=NAME
CC	IF(N.EQ.0)GO TO 277
CC	JRD=JRD+1
CC	IF(N.EQ.-1)GO TO 43
CC	GO TO 83
CC777	IF(KW.EQ.1)GO TO 277
CC	TYPE 577
CC	ACCEPT 2,PG
CC	IF(PG.EQ.'N')GO TO 43
CC577	FORMAT(' N=NEW BRACE OR <CR> ',$)
CC277	REWIND 21

277	TYPE 86,NAME
	CALL GETFIL(NAME)
CC	CALL IFILE(21,NAME)
C  LP IS START OF RN ARRAY THIS TIME
	CALL FASTIN(RSTFAC,20)
	CALL FASTIN(PWDS(KW),JJ2)
	CALL FASTIN(RN(KX),JPQ)
CC	IF(JREAD)GO TO 477
C  SKIP FIRST TIME FOR THIS PAGE
	LA=KX-1
	P=0
	DO 577 K=KW,KW+JJ2-3
	J=KWDS(K)+LA
	R=RN(J+1)
	IF(R.NE.8)GO TO 677
	IF(RN(J).LT.6)GO TO 577
C  NO NAME ON THIS STAFF - SO JUMP
	IF(RN(J+7).NE.0)GO TO 577
C  SKIPS INVISIBLE STAVES.
	XLFT=RN(J+3) 
C LEFT LIMIT OF STAFF
	R9=RN(J+9)
	IF(NTYPE.NE.0)TYPE 86,R9
	IF(R9.EQ.RNAM)GO TO 977
	IF(RNAM2.EQ.R9)GO TO 977
	IF(RNAM3.EQ.R9)GO TO 977
	IF(RNAM4.NE.R9)GO TO 577
977	SN=RN(J+2)+RSTAFF
	SNMTR=SN
	GO TO 477
677	IF(R.NE.10)GO TO 79
	IF(RN(J).LT.4)GO TO 79
	IF(RN(J+6).GT.RNUM)GO TO 79
C  SKIPS PAGE NUMS. (I.E. BIG SIZE)
	IF(RN(J).GE.6)P=-1
C  FOUND A NUM. IN BOX ↑↑, REMEMBER IT DID.
	GO TO 577
79	IF(R.NE.16)GO TO 577
	IF(RN(J+5).GE.100)P=-1
C  PICKS UP WORD WITH SZ >100
577	CONTINUE
C  DIDN'T FIND USEFUL INFO SO SKIP THIS FILE
	IF(JREAD.OR.P)GO TO 477
C  ALWAYS USE THE FIRST FILE READ AND FILES WITH REHRSL NUMS.
	KWDS(KW)=LA
	GO TO 877

CC	READ(21),ITEM,I,
CC	1 (PWDS(K),K=KW,ITEM+KW),(RN(K),K=KX,I+KX-2),ISCR,(IV(K),K=1,ISCR),
CC	1 LCNT,(IV(K),K=1,LCNT),RSTFAC,STFF

477	I=JPQ-2
C READS AND WRITES 1 EXTRA WORD
	ITEM=JJ2+KW-3
CC	ITEM=ITEM+KW-1
	JREAD=0
	IF(KW.NE.1)CALL LOOP1
	RSTAFF=RSTAFF+8

CC	IF(KW.EQ.1)GO TO 377
CC	DO 477 K=KW,ITEM+1
CC	PWDS(K)=PWDS(K)+R
CC	LA=PWDS(K)+2
CC477	RN(LA)=RN(LA)+RSTAFF
C  FOR COMBINED FILES
377	KW=ITEM+1

CC	R=PWDS(KW)-1
	KK=JPQ
CC	KX=KX+I-1
	KX=KX+JPQ

CC	NAME=NAME+2
CC	IF(NAME.GT.LSTNM)GO TO 44
CC	IF(LOOKF(NAME))GO TO 257
CC43	NAME=NAME-2

877	NXX=NXX-1
	NAME=NAME+2
	IF(NXX.NE.0)GO TO 277
	JRD=JRD+1
	NXX=NRD(JRD)
	IF(NXX.NE.0)GO TO 44
	NAME=0
	NAMZ=0
44	KX=1
	JREAD=-1
	RSTAFF=0
	KW=1
13	IWDS(1)=1
	YN=0
	IF(SN.NE.200)GO TO 8
	YN=-1
	IF(YCLEF.GT.1)YCLEF=-1
	IF(YSIG.GT.1)YSIG=-1
	IF(YMTR.GT.1)YMTR=-1

8	ZLFT=XLFT+.5
	RNUM=PGNUM
C  SIZE FACTOR FOR PAGE NUMBER FINDER (MAYBE).

	DO 6 K=1,ITEM
	R5=-1
	J=KWDS(K)
	R=RN(J+1)
	IF(R.NE.10)GO TO 800
	IF(RN(J).LT.4)GO TO 80
	IF(RN(J+6).GT.RNUM)GO TO 6
C  SKIPS PAGE NUMS. (I.E. BIG SIZE)
	IF(RN(J).LT.6)GO TO 80
C  FOUND A NUM. IN BOX ↓↓
	RN(J+6)=RNMSZ
	RN(J+4)=RNMHT
C  THE ABOVE SET HEIGHT AND SIZE OF REHEARSAL NUMS.
CC2182	RN(J+2)=SN
CC	IF(YN.EQ.'Y')RPOS=RN(J+3)-3.
	GO TO 810
800	IF(R.NE.4)GO TO 80
CCC	IF(NBAR)GO TO 80
	IF(RN(J).NE.2)GO TO 182
C  FOUND A BAR LINE
	IF(RN(J+3).LT.ZLFT)GO TO 6
C DROPS BAR LINE AT LEFT OF STAFF.
CC	KZ=RN(J+4)/100.
CC	RN(J+4)=1.+KZ*100.
C  KZ IS FOR THICK BARS.
CC	RR=RN(J+3)
CC	DO 82 KY=K+1,ITEM
CC	KZ=PWDS(KY)
CC	IF(RN(KZ+1).NE.4)GO TO 82
CC	IF(RN(KZ).NE.2)GO TO 82
C  AVOIDS DUPLICATE BARS.
CC	IF(ABS(RR-RN(KZ+3)).GT..5)GO TO 82CC	
CC	RN(KZ+2)=99
CC	RN(KZ+1)=0
CC82	CONTINUE
	CALL DBAR(K,ITEM,J)
	IF(YN.EQ.0)GO TO 810
CC	CALL ADDRST(RR,XWDS,PN)
	CALL ADRST(IWDS)
	GO TO 6
182	RN(J+1)=44
C  CHANGES CODE NUM 
	IF(RN(J).LT.5)GO TO 80
	IF(RN(J+7).GE.3)GO TO 6
C  SKIP HEAVY BRACKETS.
80	IF(R.NE.16)GO TO 180
	IF(RN(J+5).GE.100)RN(J+2)=SN
C CATCHES WANTED TEXT ON OTHER LINES.  (P5>100)
	IF(RN(J+5).GT.RLTRSZ)RN(J+5)=RLTRSZ
C  LIMITS SIZE OF LETTERS.  ADJUST RLTRSZ TO SUIT. (SET AT 1.0 NOW)
180	RSN=RN(J+2)
C  THE STAFF NUM.
	IF(R.NE.3)GO TO 3801
	IF(YCLEF)GO TO 4801
	IF(RSN.NE.SN)GO TO 6
4801	RR=AMOD(RN(J+5),100.0)
C    ↑↑↑↑↑ BECAUSE SOME CLEFS ARE MINI-CLEFS
	IF(RN(J).LT.3)RR=0
	IF(RR.EQ.CLEF)GO TO 6
C SKIP DUPLICATE CLEFS.
	IF(RR.GT.3.AND.RR.LT.100)GO TO 4800
C  CATCHES CLEFS (≤3) OR MINI-CLEFS (>3)
	IF(YCLEF.GE.0)GO TO 17
	TYPE 16,RR
16	FORMAT(' CLEF=',F2.0,' --CHANGE TO--',$)
	ACCEPT 5,RR
	R5=RR
17	CLEF=RR
C**	IF(YCLEF.EQ.1)GO TO 4802
C**	IF(YCLEF)YCLEF=1.
	YCLEF=0
	GO TO 1800
4800	IF(RSN.NE.SN)GO TO 6
	RN(J+1)=33
	GO TO 1800
4802	YCLEF=0
C  CATCHES CLEF AFTER FIRST RESTS.
	GO TO 6
3801	IF(R.NE.17)GO TO 3800
	IF(YSIG)GO TO 3802
	IF(RSN.NE.SN)GO TO 6
3802	RR=RN(J+5)
	IF(RR.EQ.XSIG)GO TO 6
	YSIG=0
	XSIG=RR
C SKIPS DUPL. KEY SIGS.
	GO TO 1800
3800	IF(R.EQ.8)GO TO 6
C  OMIT ALL STAVES FOR NOW
	IF(R.NE.18.)GO TO 81
	IF(YMTR)GO TO 1801
	IF(SNMTR.EQ.200.)SNMTR=RSN
C  SO IT WON'T REPEAT METERS.
C  CHECK ALL METERS IF LINE HAS NOT THIS INST.
	IF(RSN.NE.SNMTR)GO TO 6
1801	RA=RN(J+5)*100.+RN(J+6)
C  THE TIME SIG.
	IF(XMTR.EQ.RA)GO TO 6
	XMTR=RA
	YMTR=0
	GO TO 1800
81	IF(RSN.NE.SN)GO TO 6
1800	IF(RN(J+3).LT.XLFT)GO TO 6
C OMIT SOME THINGS TO LEFT OF STAFF BEGINNING.
	IF(R.NE.5)GO TO 810
C NEXT CHECKS FOR SLUR OVER END OF LINE
	IF(RN(J+6).GE.199.)RN(J+6)=200.
C  ****** 200.0 ABOVE IS SUBJECT TO CHANGE!
810	CALL PNRN(J,IWDS,K)
CC810	JA=PWDS(K+1)
CC	RN(J+2)=RS
CC	DO 7 KY=J,JA-1
CC	PN(LK)=RN(KY)
CC7	LK=LK+1
CC	IF(R5)GO TO 6666
CC	IF(PN(J).EQ.2)LK=LK+1
CC	PN(J)=3
CC	PN(J+5)=R5
CC6666	L=L+1
CC	XWDS(L)=LK
6	CONTINUE

C******↓↓↓↓↓↓ RHYTH RESET ↓↓↓↓↓↓↓↓
CC	I=1
CC	DO 243 K=1,L-1
CC	LB=XWDS(K)+1
CC	IF(PN(LB).NE.16)GO TO 243
CC	IF(PN(LB-1).LT.8)GO TO 243
CC	JL=XWDS(K-1)
CC244	PN(LB+2)=PN(JL+3)
C PUTS CONTINUATION OF TEXT IMMEDIATELY AFTER PREV. POS.
C  FOR SPACING PROBLEMS BELOW.
CC243	CONTINUE
CC	M=2
CC	J=1
CC24	RA=100000.
C  POSITION
CC	DO 21 K=1,L-1
CC	JL=XWDS(K)+3
CC	R=PN(JL)
CC	IF(R.EQ.100000)GO TO 21
CC241	IF(ABS(R-RA).GT..1)GO TO 240
CC	R=RA
CC	PN(JL)=R
C  PUT IN HERE MULTI-VOICE TRAP
CC	GO TO 21
CC240	IF(R.GT.RA)GO TO 21
C  LINES THEM UP
CC	I=K
CC	RA=R
CC21	CONTINUE
CC	IF(RA.EQ.100000)GO TO 23
C  JUMP IF ALL SORTED
CC242	JL=XWDS(I)
CC	LA=JL
CC	N=PN(JL)+3
C  NEXT POINTER
CC	PWDS(M)=PWDS(M-1)+N
CC	M=M+1
CC	DO 22 K=J,J+N-1
CC	RN(K)=PN(JL)
CC22	JL=JL+1
CC	PN(LA+3)=100000
C  PUT IT ASIDE
CC	J=N+J
CC	GO TO 24
	CALL SORT(IWDS)

23	LL=0
C  TO 'MOVE' INSTEAD OF 'JUSTIFY'
	IF(ENDLN.EQ.0)GO TO 2334
	R4=0
	R5=1000
	R7=0
	RS=0
	R8=ENDLN
	R9=0
	GO TO 33
2334	R4=0
	R5=10000
CC	R8=-XLFT
	R8=1.-RN(4)
	R9=0
C  INSERT??  →→ IF(R8.GT.0)R9=200.
	R7=0
	RS=0
33	CALL PTMOVE(RN,PWDS)
CC	DO 32 K=1,IFIX(PWDS(L))-1
CC	KQ=KQ+1
CC32	Q(KQ)=RN(K)
	CALL SHFT0(KQ)
CC	L=1
CC	LK=1
	ENDLN=ENDLN+200-XLFT
	TYPE 3001,KQ
	GO TO 10

27	FORMAT(' RESPACING')
CC20	K=1
20	TYPE 27
CC	KK=1
CC220	JJ=Q(K)+3
CC	PN(KK)=K
C NEW POINTER
CC	K=K+JJ
CC	KK=KK+1
CC	IF(K.LT.KQ)GO TO 220
CC	PN(KK)=K
	CALL SHFT1(KQ)
CC	L=KK
	KK=L
	TYPE 3001,L
C  DELETES EXTRA BAR LINES, ETC.
	CALL RESTS
C  FROM NOW ON ALL CODES #-1 ARE IGNORED, RESTS HAVE BEEN COMBINED.
CC	K=1
CC	L=1
CC	LL=0
CC	LK=1
CC221	IF(Q(IFIX(PN(K))+1))GO TO 321
CC	DO 421	 KL=IFIX(PN(K)),IFIX(PN(K+1))-1
CC	LL=LL+1
CC421	Q(LL)=Q(KL)
CC	LK=LK+1
CC	PN(LK)=LL+1
CC321	K=K+1
CC	IF(K.LT.KK)GO TO 221
CC	L=LK-1
	CALL SHIFT
C  L=NUMBER OF ITEMS FOR RHY RECONS.
	N=0
	S=0
	DO 601 K=1,L
	J=KPN(K)
	N=N+1
	MM(N)=J+3
C POS PTR.
	R=Q(J+1)
	IF(R.GT.4)GO TO 602
	IF(R.NE.1)GO TO 2601
	IF(Q(J).LT.7)GO TO 2601
	IF(Q(J+9))GO TO 602
C  JUMP IF R9=-1, AN IGNORED NOTE (NO LEDGER LINES)
2601	IF(R.NE.4)GO TO 3601
	LA=K+1
4601	M=KPN(LA)
	P=Q(M+1)
	IF(P.LT.4)GO TO 3601
	IF(P.EQ.4)GO TO 601
C GO ON IF NEXT AFTER BAR IS NOTE, REST, CLEF, KSIG, METER
	IF(P.EQ.17)GO TO 3601
	IF(P.EQ.18)GO TO 3601
	IF(LA.GE.L)GO TO 601
	LA=LA+1
	GO TO 4601
3601	P=Q(J+3)
	IF(ABS(P-S).LE.SPCNT)GO TO 602
C  SEE DATA -- SPCNT=SPACE BETWEEN NOTES.  <2.5 IS CONSIDERED 0.
	S=P
1601	NN(N)=R
C  -1= IMPORTANT ITEM FOR SPACING
	GO TO 601
602	IF(R.EQ.17)GO TO 1601
	IF(R.EQ.18)GO TO 1601
	IF(R.NE.9)GO TO 718
	IF(Q(J+5).EQ.8)GO TO 1601
C  FOR BAR REPEAT SIGN.
718	NN(N)=0
	IF(R.GT.7.AND.R.LT.40)GO TO 601
	IF(R.LT.5)GO TO 601
C  FOR DBL STPS
C NEXT POS2 AND 3 OF CERTAIN ITEMS
	N=N+1
	MM(N)=J+6
	NN(N)=0
	IF(R.NE.6)GO TO 601
C NEXT FOR BEAMS
	RZ=Q(J)
	IF(RZ.LT.8)GO TO 608
	IF(Q(J+10).LT.30)GO TO 608
	N=N+1
	MM(N)=J+8
	NN(N)=0
608	IF(RZ.LT.7)GO TO 601
	IF(Q(J+7))GO TO 688
	IF(Q(J+8))601,689,688
689	IF(RZ.LT.8)GO TO 601
	IF(Q(J+10).EQ.0)GO TO 601
C FOUND A POS. IN P9
688	IF(Q(J+9).LE.0)GO TO 601
	N=N+1
	MM(N)=J+9
	NN(N)=0
601	CONTINUE

C NEXT SORTS THE POINTS
6000	J=1
610	IF(Q(MM(J)).LE.Q(MM(J+1)))GO TO 611
	CALL EXCHG(MM(J),NN(J))
C  ABOVE EXCHGS --(J) AND --(J+1)
	IF(J.EQ.1)GO TO 611
	J=J-1
	GO TO 610
611	J=J+1
	IF(J.LT.N)GO TO 610
C NOW ALL SORTED
	S2=Q(MM(1))
	P1=S2
C  THE ABOVE 2 CAN GO BELOW 612
	J=1

612	IF(NN(J).EQ.0)GO TO 613
6112	M=J+1
	S1=S2
616	IF(NN(M).NE.0)GO TO 614
	IF(M.EQ.N)GO TO 614
	M=M+1
	GO TO 616
C ASSUMES PROPER END OF LIST
614	K=MM(J)
	R=Q(K-2)
C THE CODE #
	IF(R.NE.1)GO TO 615
	P=Q(K+6)

	IF(Q(K-3).GE.7)GO TO 629
2629	TYPE 1629,(Q(LA),LA=K+1,K+6)
	P=1.
1629	FORMAT(' NO RHYTHMIC VALUE  ',6F8.2)
C WAS THERE A RHYTH VALUE
629	IF(Q(K+5).EQ.1000)GO TO 630
	IF(Q(K-3).GE.8.AND.Q(K+7).EQ.1)GO TO 630
C  GRACE NOTES R8=1000 OR R10=1
	IF(P.GE..25)GO TO 617
	DO 1600 K=J+1,N-1
	LA=NN(K)
	IF(LA.EQ.0)GO TO 1600
	IF(LA.GT.4)GO TO 1600
	IF(LA.GT.1)GO TO 617
C  NEXT IS A NOTE NOW
	IF(AMOD(Q(MM+2),10.0).NE.0)P=.25
C  ADD SPACE IF NEXT NOTE HAS ACCI AND THIS IS .LT.16TH.
	GO TO 617
1600	CONTINUE
	GO TO 617
615	IF(R.NE.2)GO TO 618
	P=Q(K+4)
	IF(P.LT..2)P=.2
C  32ND, 64TH RESTS GET BIGGER!
	IF(Q(K-3).GE.5)GO TO 617
C  NO VALUE WAS FOUND
	GO TO 2629
618	IF(R.EQ.4)P=2.6
	IF(R.EQ.3)P=5
	IF(R.GE.17)P=3.
	IF(R.NE.9)GO TO 628
C  FOR BAR REPEAT SIGN.  =HALF NOTE SPACE
	P=2.
	GO TO 617
630	P=.05
C  FOR GRACE NOTES
617	IF(P.EQ.0)P=1
	IF(P.LT..125)P=.125
	IF(P.GT.8)P=8
	P=(P+(.125-P)*.7)*RSPC
	IF(P.GT.18)P=P-P/7
C  MAKE THIS BETTER!!!!
628	K=MM(M)
	S2=Q(K)
	P2=P1+P
	Q(K)=P2
	IF(M-J.EQ.1)GO TO 6113
C NEXT ADJUSTS STUFF IN BETWEEN
	R=P/(S2-S1)
	DO 620 K=J+1,M-1
	LA=MM(K)
620	Q(LA)=P1+R*(Q(LA)-S1)
6113	P1=P2
	J=M
	IF(J.LT.N)GO TO 6112
613	J=J+1
	IF(J.LT.N)GO TO 612
C  ALL DONE!
C***	IF(XLFT.EQ.0)GO TO 600
C  NEXT MOVES LEFT SIDE OF STAFF TO ZERO
CC	R5=10000.
CC	R7=RS
CC	R8=-XLFT
CC	R4=-101
CC	R9=0
CC	CALL PTMOVE(Q,PN)
CC	J=1
CC	CALL OFILE(1,'PX')
CC	LL=PN(L+1)
CC2929	WRITE(1),L,LL,
CC	1(PN(K),K=1,L+1),(Q(K),K=1,LL-1),NAMX,STFSZ,J,J,RSTFAC,STFF,IV,STFF
	CALL PUTFIL('PARTS')
2929	JJ2=L+2
	JPQ=KPN(L+1)+1
	CALL FASTOU(RSTFAC,128)
	CALL FASTOU(PN,JJ2)
	CALL FASTOU(Q,JPQ)
	CALL FINFIL
	CALL PT2(PN,Q,PWDS,RN)
2	FORMAT(A5,30I)
3001	FORMAT(2I6)
5	FORMAT(5F)
	END